package com.cb2.algorithm.leetcode;

/**
 * <a href='https://leetcode.cn/problems/ugly-number'>丑数(Ugly Number)</a>
 * <p>丑数 就是只包含质因数 2、3 和 5 的 <b>正整数</b>。</p>
 * <p>给你一个整数 n ，请你判断 n 是否为 丑数 。如果是，返回 true ；否则，返回 false 。</p>
 *
 * <p>
 * <b>示例：</b>
 * <pre>
 *  示例 1：
 *      输入：n = 6
 *      输出：true
 *      解释：6 = 2 × 3
 *
 *  示例 2：
 *      输入：n = 1
 *      输出：true
 *      解释：1 没有质因数。
 *
 *  示例 3：
 *      输入：n = 14
 *      输出：false
 *      解释：14 不是丑数，因为它包含了另外一个质因数 7 。
 * </pre>
 * </p>
 *
 * <p>
 * <b>提示：</b>
 * <ul>
 *     <li>-2^31 <= n <= 2^31 - 1</li>
 * </ul>
 * </p>
 *
 * @author c2b
 * @since 2025/4/28 10:52
 */
public class LC0263UglyNumber_S {
    static class Solution {
        public boolean isUgly(int n) {
            if (n <= 0) {
                return false;
            }
            int[] factors = new int[]{2, 3, 5};
            for (int factor : factors) {
                while (n % factor == 0) {
                    n /= factor;
                }
            }
            return n == 1;
        }
    }

    public static void main(String[] args) {
        Solution solution = new Solution();
        System.out.println(solution.isUgly(1));
        System.out.println(solution.isUgly(6));
        System.out.println(solution.isUgly(14));
    }
}
